iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
自我挑戰組

轉職未滿一年的點點滴滴系列 第 4

[Day 4] -『 GO語言學習筆記』- GO語言架構介紹

  • 分享至 

  • xImage
  •  

如本日主題,今天要來介紹一下Go語言的程式碼架構,以下內容摘錄自『 The Go Workshop 』。

package main ...................................................Part 1

import (........................................................Part 2
	"errors"
	"fmt"
	"log"
	"math/rand"
	"strconv"
	"time"
)

var helloList = []string{.......................................Part 3
	"Hello, world",
	"Καλημέρα κόσμε",
	"こんにちは世界",
	" ایند مالس",
	"Привет, мир",
}

func main() {...................................................Part 4
	rand.Seed(time.Now().UnixNano())
	index := rand.Intn(len(helloList))
	msg, err := hello(index)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(msg)
}

func hello(index int) (string, error) {.........................Part 5
	if index < 0 || index > len(helloList)-1 {
		return "", errors.New("out of range: " + strconv.Itoa(index))
	}
	return helloList[index], nil
}

Part 1

package main
  • 宣告套件(Package),所有的Go語言檔案(.go)都必須以套件宣告起頭。
  • 位於同一個目錄下的Go語言檔案,都會被視為相同套件的一部分,也就是說所有的檔案開頭都必須設定為相同的套件名稱。

Part 2

import (
	"errors"
	"fmt"
	"log"
	"math/rand"
	"strconv"
	"time"
)
  • 程式碼匯入所需的套件。

Part 3

var helloList = []string{
	"Hello, world",
	"Καλημέρα κόσμε",
	"こんにちは世界",
	" ایند مالس",
	"Привет, мир",
}
  • 變數宣告,以上範例宣告全域變數並使用切片(slice)賦值。(後續會介紹到Go語言的三種集合:切片(slice)、陣列(array),映射表(map))

Part 4

func main() {
	rand.Seed(time.Now().UnixNano())
	index := rand.Intn(len(helloList))
	msg, err := hello(index)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(msg)
}
  • Go語言宣告的函式(function),main()為程式碼的進入點。

Part 5

func hello(index int) (string, error) {
	if index < 0 || index > len(helloList)-1 {
		return "", errors.New("out of range: " + strconv.Itoa(index))
	}
	return helloList[index], nil
}
  • 自定義的函式,本範例為hello(),可接收一個為int型別的整數當參數,然後回傳一個字串(string)和一個錯誤(error)。

上一篇
[Day 3] - 『轉職工作的Lessons learned』 - 資料庫轉換
下一篇
[Day 5] -『 GO語言學習筆記』- 宣告變數(variables)
系列文
轉職未滿一年的點點滴滴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言